package com.lottery.initData;

import com.lottery.dao.qiuqiu.bettingDao.BettingLimitationDao;
import com.lottery.dao.qiuqiu.lobbyDao.LotteryOddsDao;
import com.lottery.dao.qiuqiu.lobbyDao.PlaywayinfoDao;
import com.lottery.dao.qiuqiu.statisticsDao.AgencyDao;
import com.lottery.dto.Changlong;
import com.lottery.entity.Agency;
import com.lottery.entity.BettingLimitation;
import com.lottery.entity.LotteryOdds;
import com.lottery.entity.Playwayinfo;
import com.lottery.service.qiuqiu.JedisClient;
import com.lottery.utils.messageTube.MessageFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

@Component
public class InitUtil {
    // 每个用户每期最高下注金额
    @Value("${MAXMONEY}")
    String MAXMONEY;

    // 每个用户每期最低下注金额
    @Value("${MINMONEY}")
    String MINMONEY;

    @Resource
    private AgencyDao agencyDao;
    @Resource
    private PlaywayinfoDao playwayinfoDao;
    @Resource
    private LotteryOddsDao lotteryOddsDao;
    @Resource
    private BettingLimitationDao bettingLimitationDao;

    @Resource
    private JedisClient jedis;


    public void initODD_MAP(Integer lotteyType) {
        List<Agency> agencies = agencyDao.selectAllAgency();
        List<Playwayinfo> playwayinfos = playwayinfoDao.selectPlaywayinfoListByLotteytype(lotteyType);
        LinkedHashMap<Integer, LinkedHashMap<String, LotteryOdds>> params = new LinkedHashMap<>();
        Map<String, Object> paramMap = new HashMap<>();
        for (Agency agency : agencies) {
            String agencyId = agency.getId();
            for (Playwayinfo py : playwayinfos) {
                Integer playInfoId = py.getId();
                paramMap.put("playwayId", playInfoId);
                paramMap.put("agencyMark", agencyId);
                paramMap.put("lotteyType", lotteyType);
                paramMap.put("state", 0);//0:正在使用,1:停止使用
                LinkedHashMap<String, LotteryOdds> oddsMap = new LinkedHashMap<>();
                List<LotteryOdds> list = lotteryOddsDao.selectOddByPlaywayId(paramMap);
                for (LotteryOdds aa : list) {
                    String betWay = aa.getBetWay();
                    oddsMap.put(betWay, aa);
                }
                params.put(playInfoId, oddsMap);
            }
            InitData.LOTTEY_REF_LOTTEYODD.get(lotteyType).put(agencyId, params);
        }
    }

    public void initMaxMin() {
//        BettingLimitation bettingLimitation = bettingLimitationDao.selectMaxMinBet();
//        Integer betMax = bettingLimitation.getBetMax();
//        Integer betMin = bettingLimitation.getBetMin();
//        jedis.set(MAXMONEY, betMax + "");
//        jedis.set(MINMONEY, betMin + "");
    }

    public void initBetRule() {
        //BJSC
        Map<String, Integer> bjsc = InitData.BJSC_BETRULE_REF_PLAYWAYID;
        //猜大小单双
        bjsc.put("1/大", 10);
        bjsc.put("1/小", 10);
        bjsc.put("1/单", 10);
        bjsc.put("1/双", 10);
        bjsc.put("1/大双", 10);
        bjsc.put("1/小双", 10);
        bjsc.put("1/大单", 10);
        bjsc.put("1/小单", 10);
        bjsc.put("2/大", 10);
        bjsc.put("2/小", 10);
        bjsc.put("2/单", 10);
        bjsc.put("2/双", 10);
        bjsc.put("2/大双", 10);
        bjsc.put("2/小双", 10);
        bjsc.put("2/大单", 10);
        bjsc.put("2/小单", 10);
        bjsc.put("3/大", 10);
        bjsc.put("3/小", 10);
        bjsc.put("3/单", 10);
        bjsc.put("3/双", 10);
        bjsc.put("3/大双", 10);
        bjsc.put("3/小双", 10);
        bjsc.put("3/大单", 10);
        bjsc.put("3/小单", 10);
        bjsc.put("4/大", 10);
        bjsc.put("4/小", 10);
        bjsc.put("4/单", 10);
        bjsc.put("4/双", 10);
        bjsc.put("4/大双", 10);
        bjsc.put("4/小双", 10);
        bjsc.put("4/大单", 10);
        bjsc.put("4/小单", 10);
        bjsc.put("5/大", 10);
        bjsc.put("5/小", 10);
        bjsc.put("5/单", 10);
        bjsc.put("5/双", 10);
        bjsc.put("5/大双", 10);
        bjsc.put("5/小双", 10);
        bjsc.put("5/大单", 10);
        bjsc.put("5/小单", 10);
        bjsc.put("6/大", 10);
        bjsc.put("6/小", 10);
        bjsc.put("6/单", 10);
        bjsc.put("6/双", 10);
        bjsc.put("6/大双", 10);
        bjsc.put("6/小双", 10);
        bjsc.put("6/大单", 10);
        bjsc.put("6/小单", 10);
        bjsc.put("7/大", 10);
        bjsc.put("7/小", 10);
        bjsc.put("7/单", 10);
        bjsc.put("7/双", 10);
        bjsc.put("7/大双", 10);
        bjsc.put("7/小双", 10);
        bjsc.put("7/大单", 10);
        bjsc.put("7/小单", 10);
        bjsc.put("8/大", 10);
        bjsc.put("8/小", 10);
        bjsc.put("8/单", 10);
        bjsc.put("8/双", 10);
        bjsc.put("8/大双", 10);
        bjsc.put("8/小双", 10);
        bjsc.put("8/大单", 10);
        bjsc.put("8/小单", 10);
        bjsc.put("9/大", 10);
        bjsc.put("9/小", 10);
        bjsc.put("9/单", 10);
        bjsc.put("9/双", 10);
        bjsc.put("9/大双", 10);
        bjsc.put("9/小双", 10);
        bjsc.put("9/大单", 10);
        bjsc.put("9/小单", 10);
        bjsc.put("0/大", 10);
        bjsc.put("0/小", 10);
        bjsc.put("0/单", 10);
        bjsc.put("0/双", 10);
        bjsc.put("0/大双", 10);
        bjsc.put("0/小双", 10);
        bjsc.put("0/大单", 10);
        bjsc.put("0/小单", 10);

        //猜车号
        bjsc.put("1/1",11);
        bjsc.put("2/1",11);
        bjsc.put("3/1",11);
        bjsc.put("4/1",11);
        bjsc.put("5/1",11);
        bjsc.put("6/1",11);
        bjsc.put("7/1",11);
        bjsc.put("8/1",11);
        bjsc.put("9/1",11);
        bjsc.put("0/1",11);
        bjsc.put("1/2",11);
        bjsc.put("2/2",11);
        bjsc.put("3/2",11);
        bjsc.put("4/2",11);
        bjsc.put("5/2",11);
        bjsc.put("6/2",11);
        bjsc.put("7/2",11);
        bjsc.put("8/2",11);
        bjsc.put("9/2",11);
        bjsc.put("0/2",11);
        bjsc.put("1/3",11);
        bjsc.put("2/3",11);
        bjsc.put("3/3",11);
        bjsc.put("4/3",11);
        bjsc.put("5/3",11);
        bjsc.put("6/3",11);
        bjsc.put("7/3",11);
        bjsc.put("8/3",11);
        bjsc.put("9/3",11);
        bjsc.put("0/3",11);
        bjsc.put("1/4",11);
        bjsc.put("2/4",11);
        bjsc.put("3/4",11);
        bjsc.put("4/4",11);
        bjsc.put("5/4",11);
        bjsc.put("6/4",11);
        bjsc.put("7/4",11);
        bjsc.put("8/4",11);
        bjsc.put("9/4",11);
        bjsc.put("0/4",11);
        bjsc.put("1/5",11);
        bjsc.put("2/5",11);
        bjsc.put("3/5",11);
        bjsc.put("4/5",11);
        bjsc.put("5/5",11);
        bjsc.put("6/5",11);
        bjsc.put("7/5",11);
        bjsc.put("8/5",11);
        bjsc.put("9/5",11);
        bjsc.put("0/5",11);
        bjsc.put("1/6",11);
        bjsc.put("2/6",11);
        bjsc.put("3/6",11);
        bjsc.put("4/6",11);
        bjsc.put("5/6",11);
        bjsc.put("6/6",11);
        bjsc.put("7/6",11);
        bjsc.put("8/6",11);
        bjsc.put("9/6",11);
        bjsc.put("0/6",11);
        bjsc.put("1/7",11);
        bjsc.put("2/7",11);
        bjsc.put("3/7",11);
        bjsc.put("4/7",11);
        bjsc.put("5/7",11);
        bjsc.put("6/7",11);
        bjsc.put("7/7",11);
        bjsc.put("8/7",11);
        bjsc.put("9/7",11);
        bjsc.put("0/7",11);
        bjsc.put("1/8",11);
        bjsc.put("2/8",11);
        bjsc.put("3/8",11);
        bjsc.put("4/8",11);
        bjsc.put("5/8",11);
        bjsc.put("6/8",11);
        bjsc.put("7/8",11);
        bjsc.put("8/8",11);
        bjsc.put("9/8",11);
        bjsc.put("0/8",11);
        bjsc.put("1/9",11);
        bjsc.put("2/9",11);
        bjsc.put("3/9",11);
        bjsc.put("4/9",11);
        bjsc.put("5/9",11);
        bjsc.put("6/9",11);
        bjsc.put("7/9",11);
        bjsc.put("8/9",11);
        bjsc.put("9/9",11);
        bjsc.put("0/9",11);
        bjsc.put("1/0",11);
        bjsc.put("2/0",11);
        bjsc.put("3/0",11);
        bjsc.put("4/0",11);
        bjsc.put("5/0",11);
        bjsc.put("6/0",11);
        bjsc.put("7/0",11);
        bjsc.put("8/0",11);
        bjsc.put("9/0",11);
        bjsc.put("0/0",11);

        //猜龙虎
        bjsc.put("1/龙",12);
        bjsc.put("1/虎",12);
        bjsc.put("2/龙",12);
        bjsc.put("2/虎",12);
        bjsc.put("3/龙",12);
        bjsc.put("3/虎",12);
        bjsc.put("4/龙",12);
        bjsc.put("4/虎",12);
        bjsc.put("5/龙",12);
        bjsc.put("5/虎",12);

        //猜庄闲
        bjsc.put("庄",13);
        bjsc.put("闲",13);

        //特码竞猜
        bjsc.put("和/大",15);
        bjsc.put("和/小",15);
        bjsc.put("和/单",15);
        bjsc.put("和/双",15);
        bjsc.put("A",15);
        bjsc.put("B",15);
        bjsc.put("C",15);

        //冠亚和
        bjsc.put("和/3",16);
        bjsc.put("和/4",16);
        bjsc.put("和/5",16);
        bjsc.put("和/6",16);
        bjsc.put("和/7",16);
        bjsc.put("和/8",16);
        bjsc.put("和/9",16);
        bjsc.put("和/10",16);
        bjsc.put("和/11",16);
        bjsc.put("和/12",16);
        bjsc.put("和/13",16);
        bjsc.put("和/14",16);
        bjsc.put("和/15",16);
        bjsc.put("和/16",16);
        bjsc.put("和/17",16);
        bjsc.put("和/18",16);
        bjsc.put("和/19",16);

        //猜冠亚号码
        bjsc.put("组/12",14);
        bjsc.put("组/13",14);
        bjsc.put("组/14",14);
        bjsc.put("组/15",14);
        bjsc.put("组/16",14);

        bjsc.put("组/17",14);
        bjsc.put("组/18",14);
        bjsc.put("组/19",14);
        bjsc.put("组/10",14);
        bjsc.put("组/23",14);

        bjsc.put("组/24",14);
        bjsc.put("组/25",14);
        bjsc.put("组/26",14);
        bjsc.put("组/27",14);
        bjsc.put("组/28",14);

        bjsc.put("组/29",14);
        bjsc.put("组/20",14);
        bjsc.put("组/34",14);
        bjsc.put("组/35",14);
        bjsc.put("组/36",14);

        bjsc.put("组/37",14);
        bjsc.put("组/38",14);
        bjsc.put("组/39",14);
        bjsc.put("组/30",14);
        bjsc.put("组/45",14);

        bjsc.put("组/46",14);
        bjsc.put("组/47",14);
        bjsc.put("组/48",14);
        bjsc.put("组/49",14);
        bjsc.put("组/40",14);

        bjsc.put("组/56",14);
        bjsc.put("组/57",14);
        bjsc.put("组/58",14);
        bjsc.put("组/59",14);
        bjsc.put("组/50",14);

        bjsc.put("组/67",14);
        bjsc.put("组/68",14);
        bjsc.put("组/69",14);
        bjsc.put("组/60",14);
        bjsc.put("组/78",14);

        bjsc.put("组/79",14);
        bjsc.put("组/70",14);
        bjsc.put("组/89",14);
        bjsc.put("组/80",14);
        bjsc.put("组/90",14);





        //ssc
        Map<String, Integer> ssc = InitData.SSC_BETRULE_REF_PLAYWAYID;
        //大小单双玩法
        ssc.put("1/大", 4);
        ssc.put("2/大", 4);
        ssc.put("3/大", 4);
        ssc.put("4/大", 4);
        ssc.put("5/大", 4);
        ssc.put("1/小", 4);
        ssc.put("2/小", 4);
        ssc.put("3/小", 4);
        ssc.put("4/小", 4);
        ssc.put("5/小", 4);
        ssc.put("1/单", 4);
        ssc.put("2/单", 4);
        ssc.put("3/单", 4);
        ssc.put("4/单", 4);
        ssc.put("5/单", 4);
        ssc.put("1/双", 4);
        ssc.put("2/双", 4);
        ssc.put("3/双", 4);
        ssc.put("4/双", 4);
        ssc.put("5/双", 4);
        //数字玩法
        ssc.put("1/0", 5);
        ssc.put("1/1", 5);
        ssc.put("1/2", 5);
        ssc.put("1/3", 5);
        ssc.put("1/4", 5);
        ssc.put("1/5", 5);
        ssc.put("1/6", 5);
        ssc.put("1/7", 5);
        ssc.put("1/8", 5);
        ssc.put("1/9", 5);
        ssc.put("2/0", 5);
        ssc.put("2/1", 5);
        ssc.put("2/2", 5);
        ssc.put("2/3", 5);
        ssc.put("2/4", 5);
        ssc.put("2/5", 5);
        ssc.put("2/6", 5);
        ssc.put("2/7", 5);
        ssc.put("2/8", 5);
        ssc.put("2/9", 5);
        ssc.put("3/0", 5);
        ssc.put("3/1", 5);
        ssc.put("3/2", 5);
        ssc.put("3/3", 5);
        ssc.put("3/4", 5);
        ssc.put("3/5", 5);
        ssc.put("3/6", 5);
        ssc.put("3/7", 5);
        ssc.put("3/8", 5);
        ssc.put("3/9", 5);
        ssc.put("4/0", 5);
        ssc.put("4/1", 5);
        ssc.put("4/2", 5);
        ssc.put("4/3", 5);
        ssc.put("4/4", 5);
        ssc.put("4/5", 5);
        ssc.put("4/6", 5);
        ssc.put("4/7", 5);
        ssc.put("4/8", 5);
        ssc.put("4/9", 5);
        ssc.put("5/0", 5);
        ssc.put("5/1", 5);
        ssc.put("5/2", 5);
        ssc.put("5/3", 5);
        ssc.put("5/4", 5);
        ssc.put("5/5", 5);
        ssc.put("5/6", 5);
        ssc.put("5/7", 5);
        ssc.put("5/8", 5);
        ssc.put("5/9", 5);
        //特码玩法
        ssc.put("总/大", 6);
        ssc.put("总/小", 6);
        ssc.put("总/单", 6);
        ssc.put("总/双", 6);
        ssc.put("总/大单", 6);
        ssc.put("总/小单", 6);
        ssc.put("总/大双", 6);
        ssc.put("总/大双", 6);
        ssc.put("A", 6);
        ssc.put("B", 6);
        ssc.put("C", 6);

        //单码连码玩法
        ssc.put("1码/0", 7);
        ssc.put("1码/1", 7);
        ssc.put("1码/2", 7);
        ssc.put("1码/3", 7);
        ssc.put("1码/4", 7);
        ssc.put("1码/5", 7);
        ssc.put("1码/6", 7);
        ssc.put("1码/7", 7);
        ssc.put("1码/8", 7);
        ssc.put("1码/9", 7);

        //猜龙虎玩法
        ssc.put("龙", 8);
        ssc.put("虎", 8);
        ssc.put("合", 8);

        //三球组玩法
        ssc.put("前/豹子", 9);
        ssc.put("前/顺子", 9);
        ssc.put("前/对子", 9);
        ssc.put("前/半顺", 9);
        ssc.put("前/杂六", 9);
        ssc.put("中/豹子", 9);
        ssc.put("中/顺子", 9);
        ssc.put("中/对子", 9);
        ssc.put("中/半顺", 9);
        ssc.put("中/杂六", 9);
        ssc.put("后/豹子", 9);
        ssc.put("后/顺子", 9);
        ssc.put("后/对子", 9);
        ssc.put("后/半顺", 9);
        ssc.put("后/杂六", 9);
    }

    public void initSscChangLong() {
        List<Changlong> ssc = InitData.SSC_STORE_CHANGLONG;
        //大小单双玩法
        ssc.add(new Changlong("1/大", 0));
        ssc.add(new Changlong("2/大", 0));
        ssc.add(new Changlong("3/大", 0));
        ssc.add(new Changlong("4/大", 0));
        ssc.add(new Changlong("5/大", 0));
        ssc.add(new Changlong("1/小", 0));
        ssc.add(new Changlong("2/小", 0));
        ssc.add(new Changlong("3/小", 0));
        ssc.add(new Changlong("4/小", 0));
        ssc.add(new Changlong("5/小", 0));
        ssc.add(new Changlong("1/单", 0));
        ssc.add(new Changlong("2/单", 0));
        ssc.add(new Changlong("3/单", 0));
        ssc.add(new Changlong("4/单", 0));
        ssc.add(new Changlong("5/单", 0));
        ssc.add(new Changlong("1/双", 0));
        ssc.add(new Changlong("2/双", 0));
        ssc.add(new Changlong("3/双", 0));
        ssc.add(new Changlong("4/双", 0));
        ssc.add(new Changlong("5/双", 0));
        //猜龙虎玩法
        ssc.add(new Changlong("龙", 0));
        ssc.add(new Changlong("虎", 0));
        ssc.add(new Changlong("合", 0));
        //特码玩法
        ssc.add(new Changlong("总/大", 0));
        ssc.add(new Changlong("总/小", 0));
        ssc.add(new Changlong("总/单", 0));
        ssc.add(new Changlong("总/双", 0));
        ssc.add(new Changlong("A", 0));
        ssc.add(new Changlong("B", 0));
        ssc.add(new Changlong("C", 0));
    }

    public void initBjscChangLong() {
        List<Changlong> bjsc = InitData.BJSC_STORE_CHANGLONG;
        //大小单双玩法
        bjsc.add(new Changlong("1/大",0));
        bjsc.add(new Changlong("1/小",0));
        bjsc.add(new Changlong("1/单",0));
        bjsc.add(new Changlong("1/双",0));
        bjsc.add(new Changlong("2/大",0));
        bjsc.add(new Changlong("2/小",0));
        bjsc.add(new Changlong("2/单",0));
        bjsc.add(new Changlong("2/双",0));
        bjsc.add(new Changlong("3/大",0));
        bjsc.add(new Changlong("3/小",0));
        bjsc.add(new Changlong("3/单",0));
        bjsc.add(new Changlong("3/双",0));
        bjsc.add(new Changlong("4/大",0));
        bjsc.add(new Changlong("4/小",0));
        bjsc.add(new Changlong("4/单",0));
        bjsc.add(new Changlong("4/双",0));
        bjsc.add(new Changlong("5/大",0));
        bjsc.add(new Changlong("5/小",0));
        bjsc.add(new Changlong("5/单",0));
        bjsc.add(new Changlong("5/双",0));
        bjsc.add(new Changlong("6/大",0));
        bjsc.add(new Changlong("6/小",0));
        bjsc.add(new Changlong("6/单",0));
        bjsc.add(new Changlong("6/双",0));
        bjsc.add(new Changlong("7/大",0));
        bjsc.add(new Changlong("7/小",0));
        bjsc.add(new Changlong("7/单",0));
        bjsc.add(new Changlong("7/双",0));
        bjsc.add(new Changlong("8/大",0));
        bjsc.add(new Changlong("8/小",0));
        bjsc.add(new Changlong("8/单",0));
        bjsc.add(new Changlong("8/双",0));
        bjsc.add(new Changlong("9/大",0));
        bjsc.add(new Changlong("9/小",0));
        bjsc.add(new Changlong("9/单",0));
        bjsc.add(new Changlong("9/双",0));
        bjsc.add(new Changlong("0/大",0));
        bjsc.add(new Changlong("0/小",0));
        bjsc.add(new Changlong("0/单",0));
        bjsc.add(new Changlong("0/双",0));

        //猜龙虎
        bjsc.add(new Changlong("1/龙",0));
        bjsc.add(new Changlong("1/虎",0));
        bjsc.add(new Changlong("2/龙",0));
        bjsc.add(new Changlong("2/虎",0));
        bjsc.add(new Changlong("3/龙",0));
        bjsc.add(new Changlong("3/虎",0));
        bjsc.add(new Changlong("4/龙",0));
        bjsc.add(new Changlong("4/虎",0));
        bjsc.add(new Changlong("5/龙",0));
        bjsc.add(new Changlong("5/虎",0));

        //特码竞猜
        bjsc.add(new Changlong("和/大",0));
        bjsc.add(new Changlong("和/小",0));
        bjsc.add(new Changlong("和/单",0));
        bjsc.add(new Changlong("和/双",0));
        bjsc.add(new Changlong("和/A",0));
        bjsc.add(new Changlong("和/B",0));
        bjsc.add(new Changlong("和/C",0));

        //庄闲
        bjsc.add(new Changlong("庄",0));
        bjsc.add(new Changlong("闲",0));
    }

	public void initEffctiveTimes() {
		List<Agency> agencies = agencyDao.selectAllAgency();
		for (Agency agency : agencies) {
			InitData.effctiveTimes.put(agency.getId(), agency.getEffectiveTime());
		}
	}
}
